from django_redis import get_redis_connection


class RedisTool:
    def __init__(self):
        self.redis = get_redis_connection('code')

    # 封装一个存储验证码的函数 有效期2分钟
    def set_code(self, phone, code):  # key  val   expire
        # setex key键 expire有效期 val值
        self.redis.setex(phone, 600, code)

    def get_code(self, phone):
        # radis.get 键拿到值
        code = self.redis.get(phone)
        if not code:
            return None
        return code.decode('utf-8')  # 反回字符串 将二进制转换为utf-8

    def set_word(self, word):
        # 有序列表的一个方法，如果不存在hot新增一个键值对，如果不存在权重值+1，三个参数是键，如果有权重值+几，值
        return self.redis.zincrby("hot", 1, word)

    def get_word(self):
        # 取hot里面的前五个数，zrevrange
        return self.redis.zrevrange("hot", 0, 4)  # 展示前5位

    def set_info(self, str):
        return self.redis.lpush("info", str)

    def get_info(self):
        return self.redis.lrange("info", 0, -1)

    def set_lock(self, str):
        return self.redis.setnx(str, 1)

    def del_lock(self, str):
        return self.redis.delete(str)


# 单例模型
redistool = RedisTool()
